La nécessité du réhachage
Pour garantir des performances souhaitées en cas moyen pour la recherche et l'insertion, le Facteur de charge () doit être strictement limité, où est le nombre d'éléments et est la capacité du tableau.
Si est autorisé à croître indéfiniment, les collisions augmentent exponentiellement, et la complexité moyenne du temps dégrade vers .
| Condition | Action déclenchée | Impact |
|---|---|---|
| Standard insertion | Efficiency optimale maintenue. | |
| Redimensionnement (réhachage) | Restaure performance, mais entraîne un coût temporaire de coût. |
Seuils courants (): 0,70 à 0,75.
Le processus de redimensionnement
Le redimensionnement exige le recalcul de l'indice de hachage pour chaque élément actuellement dans le tableau, un processus connu sous le nom de réhachage.
- Détermination de la nouvelle capacité : Sélectionnez une nouvelle capacité , généralement double la capacité actuelle (). Cela garantit que le nouveau est la moitié du seuil critique.
- Création du tableau : Allouer un nouveau tableau de hachage de taille .
- Itération sur les éléments : Parcourir tous les éléments existants dans l'ancien tableau.
- Réhachage : Pour chaque clé , calculez l'index nouveau en utilisant le module mis à jour :
- Insertion : Insérer l'élément dans le nouveau tableau à l'index .
Remarque : Puisque le module change, copier simplement le tableau est impossible ; chaque élément doit être réinséré.
Coût amorti
Pourquoi le redimensionnement est-il
Le redimensionnement exige le traitement de tous les éléments, ce qui signifie que l'opération elle-même prend temps, ce qui viole temporairement l'objectif de insertion.
Analyse amortie
Nous utilisons Analyse amortie pour justifier ce coût. Si le tableau double sa taille à chaque redimensionnement (croissance exponentielle), le coût élevé de est réparti sur un grand nombre d'insertions intermédiaires de insertions.
Le coût moyen de toute insertion unique, en tenant compte du redimensionnement périodique de , reste .
1. Un tableau de hachage a une capacité et un facteur de charge maximal . À quelle quantité d'éléments () un redimensionnement doit-il être déclenché ?
2. Lors d'un redimensionnement, pourquoi ne pouvons-nous pas simplement copier les éléments de l'ancien tableau vers le nouveau, plus grand tableau ?
3. Quelle est la complexité temporelle amortie d'une insertion dans un tableau de hachage qui double sa taille lors du redimensionnement ?
4. Quelle est la conséquence principale de ne pas redimensionner un tableau de hachage lorsque son facteur de charge devient trop élevé ?